Windows Serverのリモート管理 (WinRM)をサブネットの外から使えるようにする
こんにちは、ももんが大好きの小山です。みなさんいかがお過ごしでしょうか?
今日は、Windows Server の Remote Management (WinRM) を他のサブネットから使えるようにする方法についてご紹介します。
動機
Server Core の Windows Server インスタンスを管理するために用意した作業用インスタンスでサーバーマネージャーに Server Core インスタンスを追加しようとすると、以下のようなメッセージが表示されリフレッシュに失敗します。
これは、Windows Server のファイアウォールが既定のルールでリモート管理に関する通信を同一サブネット (Local Subnet) からしか許可していないために起こる問題です。
ということで、今回はこのルールを PowerShell コマンドレット、MMC スナップインの両方で変更してみたいと思います。
PowerShellから変更する
ルールを変更する前に、現在 RemoteAddress として許可されているネットワークアドレスを確認します。既定では LocalSubnet が許可されています。
例: Get-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" | Get-NetFirewallAddressFilter
注意: 既に LocalSubnet 以外のネットワークアドレスが設定されている場合、以下のコマンドレットで上書きされるという点に注意してください。
以下のコマンドレットを使って、当該ルールで新たに許可したいネットワークアドレスを指定します。この際、既に設定されていたネットワークアドレスを必ず含めるようにします。
例: Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress LocalSubnet,10.141.0.0/16
改めて管理用インスタンスのサーバーマネージャーをリフレッシュします。今度は問題なくリフレッシュできました。
MMCスナップインから変更する
ファイル名を指定して実行からwf.mscでセキュリティが強化された Windows ファイアウォールの MMC スナップインを開きます。
受信の規則からWindows リモート管理 (HTTP 受信)を選択して、プロパティを開きます。
スコープのタブを開いて、リモート IP アドレスに必要なネットワークアドレスを追加します。
必要なネットワークアドレスが追加できたら、OKを選択して終了します。
作業用インスタンスのサーバーマネージャーをリフレッシュして、問題なく完了することを確認しましょう。
余談
余談ですが、Amazon EC2 ではインスタンス内部のファイアウォールではなくインスタンスのセキュリティグループでネットワークセキュリティを確保することが推奨されています。今回はオンプレミス関連を想定して Windows ファイアウォールに関する設定をご紹介しましたが、EC2 ではセキュリティグループで設定することを前提として考えるようにしましょう。
例: Set-NetFirewallProfile -All -Enabled false
おわりに
以上です!めでたしめでたし?